Estudio del conjunto de datos PASCAL 2012 para la segmentacion de imagenes
import platform
from class_levelsetmethod import LevelSetMethod, Image, np, plt, animation, os, ImageOps, ListedColormap, pickle
platform.processor()
'AMD64 Family 23 Model 113 Stepping 0, AuthenticAMD'
def get_groud_truth(id_name):
img_r = Image.open(f"dataset/database_pascal/{id_name}.png").convert("L")
dim_r = (img_r.size[0], img_r.size[1])
xy_dim_max = np.argmax(dim_r)
if dim_r[xy_dim_max] > 100:
basewidth = 100
w, h = np.array([int(dim_r[_]*100/dim_r[xy_dim_max]) for _ in range(2)])
img_r = img_r.resize((w,h), Image.ANTIALIAS)
dim_r = (img_r.size[1], img_r.size[0])
img_r = ImageOps.posterize(img_r, 4)
img_r = np.array(img_r.getdata()).reshape((dim_r[0], dim_r[1]))
img_r = (255*(img_r-np.min(img_r))/(np.max(img_r)-np.min(img_r))).astype(int)
img_r = ((img_r>np.mean(img_r))).astype(int)
return img_r
def precision_recall(y_real, y_pred, pos_label=1):
tp = np.sum( (y_real==y_pred) & (y_pred==pos_label) )
p = np.sum( y_real==pos_label )
recall = tp/p
fp = np.sum( (y_real!=y_pred) & (y_pred==pos_label) )
precision = tp/(tp+fp)
return precision, recall
def plot_precision_recall(img_r, iterations):
clf = [(un>0).astype(int) for un in iterations]
precision_recall_curve = [precision_recall(img_r, clf_k, pos_label=1) for clf_k in clf]
precision = np.array([prc_k[0] for prc_k in precision_recall_curve])
recall = np.array([prc_k[1] for prc_k in precision_recall_curve])
mask_0 = np.isclose(precision+recall, 0)
mask_1 = ~mask_0
best_iter= np.argmax( mask_1*(2*precision*recall)/(precision+recall+mask_0) )
fig, ax = plt.subplots(1, 1, figsize=(5, 5))
ax.scatter(precision, recall, c=range(len(precision_recall_curve)), cmap="plasma")
ax.scatter([precision[best_iter]], [recall[best_iter]], c="red", s=50, label=f"Iter: {best_iter}\nRecall: {100*recall[best_iter]: .1f}\%\nPrecision: {100*precision[best_iter]: .1f}\%")
ax.set_yticks(np.linspace(3/4, 1, 5).round(2));
ax.set_xticks(np.linspace(3/4, 1, 5).round(2));
plt_eps = 0.01
plt.xticks(fontsize=18*0.8)
plt.yticks(fontsize=18*0.8)
ax.set_xlim([3/4-plt_eps, 1+plt_eps])
ax.set_ylim([3/4-plt_eps, 1+plt_eps])
ax.set_ylabel("Recall", fontsize=18)
ax.set_xlabel("Precision", fontsize=18)
plt.grid()
ax.legend(fontsize=18*0.8)
ax.set_title("Precision vs Recall", fontsize=18*1.5);
plt.gca().set_aspect('equal')
%%time
pascal_images = ["2009_001314", "2008_004621", "2008_002247", "2007_004052", "2009_005078"]
# path_save_file_per_test = {}
dic_img_arr = {}
for id_name in pascal_images:
img_o = Image.open(f"dataset/database_pascal/{id_name}.jpg").convert("L")
dim = (img_o.size[1], img_o.size[0])
img = np.array(img_o.getdata()).reshape((dim[0], dim[1]))
dic_img_arr[id_name] = img
Wall time: 77.6 ms
%%time
id_name = pascal_images[0]
segmentator = LevelSetMethod(id_name=id_name)
segmentator.set_image(
dic_img_arr[id_name],
reshape=True,
norm=True
)
segmentator.show_image(grid=True)
<set_image> img: <class 'numpy.ndarray'>, reshape: True, norm: True |img_dim: [457 500] |img_min/max: (16, 195) |new_img_min/max(resize): (1.0477378966863588e-08, 5.991934994504968e-08) |new_dim: [ 91 100] |new_img_min/max(norm): (0, 255) |size_domain: 9100 </set_image> Wall time: 17 ms
%%time
segmentator.eval_stopfunct(
list_sgm=np.array([0.01, 0.5, 1]),
list_lmbd=np.array([15, 5, 1]),
cmap="viridis_r"
)
plt.tight_layout()
Wall time: 166 ms
%%time
segmentator.set_stopfunct(
sgm=0.01,
lmbd=5,
)
<set_stopfunct> sigma: 0.01, lambda: 5 |gauss_min/max: (0, 255) |stopfunct_min/max: (0.0006260956674179814, 1.0) </set_stopfunct> Wall time: 2 ms
%%time
segmentator.eval_sgndist(
c=np.array([0.4, 0.5]),
r=0.18,
e=1
)
Wall time: 18 ms
%%time
segmentator.set_sgndist(
c=np.array([0.4, 0.5]),
r=0.18,
e=1
)
<set_sgndist> centro: [0.4 0.5], radio: 0.18, excentricidad: 1 </set_sgndist> Wall time: 1 ms
%%time
segmentator.show_setting(cmap_stopfunct="viridis_r")
Wall time: 41 ms
%%time
segmentator.print_setting()
<print_setting> |sigma: 0.01 |lambda: 5 |centro: [0.4 0.5] |radio: 0.18 |excentricidad: 1 </print_setting> Wall time: 1e+03 µs
%%time
segmentator.solve(
n_iter = 150,
tau = 0.1,
k = -5,
save_rate=10,
root_path_save="results",
show_log_rate=5
)
<solve> N° iteraciones: 150, discretizacion en tiempo: 0.1, constante k: -5 |path_save_file: results/2009_001314__iterations_times__sgm_0_01__lmbd_5__cx_0_4__cy_0_5__r_0_18__e_1__tau_0_1__k_-5 |Iter: 1, T iter: 2.2s, T trans: 4.1s, T per iter: 2.0s p/m 0.2s, T rest: 307.4s p/m 2.1s |Iter: 6, T iter: 1.9s, T trans: 13.5s, T per iter: 1.9s p/m 0.1s, T rest: 280.1s p/m 1.4s |Iter: 11, T iter: 2.3s, T trans: 23.4s, T per iter: 1.9s p/m 0.1s, T rest: 272.8s p/m 1.6s |Iter: 16, T iter: 1.9s, T trans: 32.9s, T per iter: 1.9s p/m 0.1s, T rest: 261.1s p/m 1.3s |Iter: 21, T iter: 2.2s, T trans: 42.7s, T per iter: 1.9s p/m 0.1s, T rest: 252.5s p/m 1.4s |Iter: 26, T iter: 1.9s, T trans: 52.3s, T per iter: 1.9s p/m 0.1s, T rest: 242.0s p/m 1.2s |Iter: 31, T iter: 1.9s, T trans: 61.8s, T per iter: 1.9s p/m 0.1s, T rest: 231.6s p/m 1.1s |Iter: 36, T iter: 1.9s, T trans: 71.3s, T per iter: 1.9s p/m 0.1s, T rest: 221.5s p/m 1.0s |Iter: 41, T iter: 2.3s, T trans: 81.1s, T per iter: 1.9s p/m 0.1s, T rest: 212.5s p/m 1.1s |Iter: 46, T iter: 2.0s, T trans: 90.8s, T per iter: 1.9s p/m 0.1s, T rest: 202.8s p/m 1.1s |Iter: 51, T iter: 2.0s, T trans: 100.5s, T per iter: 1.9s p/m 0.1s, T rest: 193.3s p/m 1.0s |Iter: 56, T iter: 2.0s, T trans: 110.5s, T per iter: 1.9s p/m 0.1s, T rest: 184.1s p/m 0.9s |Iter: 61, T iter: 2.0s, T trans: 120.6s, T per iter: 1.9s p/m 0.1s, T rest: 175.1s p/m 0.9s |Iter: 66, T iter: 2.0s, T trans: 130.6s, T per iter: 1.9s p/m 0.1s, T rest: 165.7s p/m 0.9s |Iter: 71, T iter: 2.4s, T trans: 140.7s, T per iter: 2.0s p/m 0.1s, T rest: 156.4s p/m 0.9s |Iter: 76, T iter: 2.0s, T trans: 150.5s, T per iter: 2.0s p/m 0.1s, T rest: 146.6s p/m 0.9s |Iter: 81, T iter: 2.3s, T trans: 160.6s, T per iter: 2.0s p/m 0.1s, T rest: 137.1s p/m 0.9s |Iter: 86, T iter: 1.9s, T trans: 170.2s, T per iter: 2.0s p/m 0.1s, T rest: 127.2s p/m 0.8s |Iter: 91, T iter: 2.3s, T trans: 180.3s, T per iter: 2.0s p/m 0.1s, T rest: 117.6s p/m 0.8s |Iter: 96, T iter: 1.9s, T trans: 190.1s, T per iter: 2.0s p/m 0.1s, T rest: 107.8s p/m 0.8s |Iter: 101, T iter: 2.3s, T trans: 200.2s, T per iter: 2.0s p/m 0.1s, T rest: 98.1s p/m 0.7s |Iter: 106, T iter: 1.9s, T trans: 209.9s, T per iter: 2.0s p/m 0.1s, T rest: 88.3s p/m 0.7s |Iter: 111, T iter: 2.0s, T trans: 219.6s, T per iter: 2.0s p/m 0.1s, T rest: 78.4s p/m 0.6s |Iter: 116, T iter: 1.9s, T trans: 229.3s, T per iter: 2.0s p/m 0.1s, T rest: 68.6s p/m 0.6s |Iter: 121, T iter: 2.0s, T trans: 239.1s, T per iter: 2.0s p/m 0.1s, T rest: 58.8s p/m 0.5s |Iter: 126, T iter: 1.9s, T trans: 248.8s, T per iter: 2.0s p/m 0.1s, T rest: 49.0s p/m 0.5s |Iter: 131, T iter: 2.0s, T trans: 258.8s, T per iter: 2.0s p/m 0.1s, T rest: 39.2s p/m 0.4s |Iter: 136, T iter: 1.9s, T trans: 268.5s, T per iter: 2.0s p/m 0.1s, T rest: 29.4s p/m 0.4s |Iter: 141, T iter: 2.5s, T trans: 278.9s, T per iter: 2.0s p/m 0.1s, T rest: 19.6s p/m 0.3s |Iter: 146, T iter: 1.9s, T trans: 288.6s, T per iter: 2.0s p/m 0.1s, T rest: 9.8s p/m 0.2s </solve> Wall time: 4min 56s
%%time
segmentator.show_solution(
show_iters=[26, 49, 99]
)
Wall time: 69.1 ms
path_save_file_per_test["test_0"] = segmentator.path_save_file
img_r = get_groud_truth(segmentator.id_name)
plt.imshow(img_r, cmap=ListedColormap(['black','tab:red']));
plot_precision_recall(img_r, segmentator.iterations)
segmentator.show_solution(
show_iters=[45, 55, 65]
)
plt.tight_layout()
%%time
segmentator.set_stopfunct(
sgm=0.01,
lmbd=15,
)
<set_stopfunct> sigma: 0.01, lambda: 15 |gauss_min/max: (0, 255) |stopfunct_min/max: (0.005606777971592324, 1.0) </set_stopfunct> Wall time: 1.54 ms
%%time
segmentator.solve(
n_iter = 150,
tau = 0.1,
k = -5,
save_rate=10,
root_path_save="results",
show_log_rate=5
)
<solve> N° iteraciones: 150, discretizacion en tiempo: 0.1, constante k: -5 |path_save_file: results/2009_001314__iterations_times__sgm_0_01__lmbd_15__cx_0_4__cy_0_5__r_0_18__e_1__tau_0_1__k_-5 |Iter: 1, T iter: 2.0s, T trans: 4.0s, T per iter: 2.0s p/m 0.0s, T rest: 296.8s p/m 0.0s |Iter: 6, T iter: 2.0s, T trans: 13.8s, T per iter: 2.0s p/m 0.0s, T rest: 286.4s p/m 0.1s |Iter: 11, T iter: 2.0s, T trans: 23.6s, T per iter: 2.0s p/m 0.0s, T rest: 275.6s p/m 0.1s |Iter: 16, T iter: 1.9s, T trans: 33.5s, T per iter: 2.0s p/m 0.0s, T rest: 265.9s p/m 0.2s |Iter: 21, T iter: 2.0s, T trans: 43.4s, T per iter: 2.0s p/m 0.0s, T rest: 256.5s p/m 0.3s |Iter: 26, T iter: 1.9s, T trans: 53.1s, T per iter: 2.0s p/m 0.0s, T rest: 245.8s p/m 0.3s |Iter: 31, T iter: 2.0s, T trans: 62.9s, T per iter: 2.0s p/m 0.0s, T rest: 235.9s p/m 0.3s |Iter: 36, T iter: 1.9s, T trans: 72.7s, T per iter: 2.0s p/m 0.0s, T rest: 225.9s p/m 0.3s |Iter: 41, T iter: 2.0s, T trans: 82.4s, T per iter: 2.0s p/m 0.0s, T rest: 215.8s p/m 0.3s |Iter: 46, T iter: 1.9s, T trans: 92.1s, T per iter: 2.0s p/m 0.0s, T rest: 205.7s p/m 0.3s |Iter: 51, T iter: 2.3s, T trans: 102.1s, T per iter: 2.0s p/m 0.1s, T rest: 196.4s p/m 0.6s |Iter: 56, T iter: 2.0s, T trans: 112.0s, T per iter: 2.0s p/m 0.1s, T rest: 186.6s p/m 0.5s |Iter: 61, T iter: 2.3s, T trans: 122.1s, T per iter: 2.0s p/m 0.1s, T rest: 177.2s p/m 0.6s |Iter: 66, T iter: 1.9s, T trans: 131.7s, T per iter: 2.0s p/m 0.1s, T rest: 167.1s p/m 0.6s |Iter: 71, T iter: 2.3s, T trans: 141.7s, T per iter: 2.0s p/m 0.1s, T rest: 157.5s p/m 0.7s |Iter: 76, T iter: 1.9s, T trans: 151.4s, T per iter: 2.0s p/m 0.1s, T rest: 147.4s p/m 0.6s |Iter: 81, T iter: 2.0s, T trans: 161.1s, T per iter: 2.0s p/m 0.1s, T rest: 137.5s p/m 0.6s |Iter: 86, T iter: 2.0s, T trans: 171.0s, T per iter: 2.0s p/m 0.1s, T rest: 127.8s p/m 0.6s |Iter: 91, T iter: 2.0s, T trans: 181.0s, T per iter: 2.0s p/m 0.1s, T rest: 118.0s p/m 0.5s |Iter: 96, T iter: 1.9s, T trans: 190.7s, T per iter: 2.0s p/m 0.1s, T rest: 108.1s p/m 0.5s |Iter: 101, T iter: 2.4s, T trans: 200.8s, T per iter: 2.0s p/m 0.1s, T rest: 98.4s p/m 0.6s |Iter: 106, T iter: 2.0s, T trans: 210.5s, T per iter: 2.0s p/m 0.1s, T rest: 88.5s p/m 0.5s |Iter: 111, T iter: 2.0s, T trans: 220.3s, T per iter: 2.0s p/m 0.1s, T rest: 78.7s p/m 0.5s |Iter: 116, T iter: 1.9s, T trans: 230.0s, T per iter: 2.0s p/m 0.1s, T rest: 68.8s p/m 0.4s |Iter: 121, T iter: 2.4s, T trans: 240.1s, T per iter: 2.0s p/m 0.1s, T rest: 59.0s p/m 0.4s |Iter: 126, T iter: 1.9s, T trans: 249.8s, T per iter: 2.0s p/m 0.1s, T rest: 49.2s p/m 0.4s |Iter: 131, T iter: 2.4s, T trans: 260.1s, T per iter: 2.0s p/m 0.1s, T rest: 39.4s p/m 0.4s |Iter: 136, T iter: 1.9s, T trans: 269.9s, T per iter: 2.0s p/m 0.1s, T rest: 29.6s p/m 0.3s |Iter: 141, T iter: 2.0s, T trans: 279.8s, T per iter: 2.0s p/m 0.1s, T rest: 19.7s p/m 0.3s |Iter: 146, T iter: 1.9s, T trans: 289.4s, T per iter: 2.0s p/m 0.1s, T rest: 9.8s p/m 0.2s </solve> Wall time: 4min 57s
%%time
segmentator.show_solution(
show_iters=[45, 55, 65]
)
plt.tight_layout()
Wall time: 82.1 ms
path_save_file_per_test["test_1"] = segmentator.path_save_file
plot_precision_recall(img_r, segmentator.iterations)
%%time
segmentator.set_stopfunct(
sgm=0.01,
lmbd=1,
)
<set_stopfunct> sigma: 0.01, lambda: 1 |gauss_min/max: (0, 255) |stopfunct_min/max: (2.5058888387711116e-05, 1.0) </set_stopfunct> Wall time: 999 µs
%%time
segmentator.solve(
n_iter = 150,
tau = 0.1,
k = -5,
save_rate=10,
root_path_save="results",
show_log_rate=5
)
<solve> N° iteraciones: 150, discretizacion en tiempo: 0.1, constante k: -5 |path_save_file: results/2009_001314__iterations_times__sgm_0_01__lmbd_1__cx_0_4__cy_0_5__r_0_18__e_1__tau_0_1__k_-5 |Iter: 1, T iter: 2.0s, T trans: 4.0s, T per iter: 2.0s p/m 0.0s, T rest: 300.3s p/m 0.5s |Iter: 6, T iter: 2.0s, T trans: 14.2s, T per iter: 2.0s p/m 0.1s, T rest: 294.2s p/m 0.7s |Iter: 11, T iter: 2.0s, T trans: 24.2s, T per iter: 2.0s p/m 0.0s, T rest: 282.0s p/m 0.5s |Iter: 16, T iter: 2.1s, T trans: 34.5s, T per iter: 2.0s p/m 0.1s, T rest: 274.1s p/m 0.6s |Iter: 21, T iter: 2.3s, T trans: 44.6s, T per iter: 2.0s p/m 0.1s, T rest: 263.6s p/m 0.9s |Iter: 26, T iter: 2.0s, T trans: 54.4s, T per iter: 2.0s p/m 0.1s, T rest: 251.8s p/m 0.9s |Iter: 31, T iter: 2.4s, T trans: 64.8s, T per iter: 2.0s p/m 0.1s, T rest: 242.9s p/m 1.1s |Iter: 36, T iter: 2.0s, T trans: 74.8s, T per iter: 2.0s p/m 0.1s, T rest: 232.4s p/m 1.0s |Iter: 41, T iter: 2.3s, T trans: 84.9s, T per iter: 2.0s p/m 0.1s, T rest: 222.3s p/m 1.1s |Iter: 46, T iter: 1.9s, T trans: 94.6s, T per iter: 2.0s p/m 0.1s, T rest: 211.4s p/m 1.0s |Iter: 51, T iter: 2.0s, T trans: 104.3s, T per iter: 2.0s p/m 0.1s, T rest: 200.7s p/m 1.0s |Iter: 56, T iter: 1.9s, T trans: 114.0s, T per iter: 2.0s p/m 0.1s, T rest: 190.0s p/m 0.9s |Iter: 61, T iter: 2.0s, T trans: 123.7s, T per iter: 2.0s p/m 0.1s, T rest: 179.6s p/m 0.9s |Iter: 66, T iter: 1.9s, T trans: 133.4s, T per iter: 2.0s p/m 0.1s, T rest: 169.2s p/m 0.9s |Iter: 71, T iter: 2.0s, T trans: 143.1s, T per iter: 2.0s p/m 0.1s, T rest: 159.0s p/m 0.8s |Iter: 76, T iter: 1.9s, T trans: 152.8s, T per iter: 2.0s p/m 0.1s, T rest: 148.8s p/m 0.8s |Iter: 81, T iter: 2.0s, T trans: 162.5s, T per iter: 2.0s p/m 0.1s, T rest: 138.7s p/m 0.7s |Iter: 86, T iter: 1.9s, T trans: 172.1s, T per iter: 2.0s p/m 0.1s, T rest: 128.6s p/m 0.7s |Iter: 91, T iter: 2.0s, T trans: 181.8s, T per iter: 2.0s p/m 0.1s, T rest: 118.6s p/m 0.6s |Iter: 96, T iter: 1.9s, T trans: 191.5s, T per iter: 2.0s p/m 0.1s, T rest: 108.6s p/m 0.6s |Iter: 101, T iter: 2.0s, T trans: 201.3s, T per iter: 2.0s p/m 0.1s, T rest: 98.7s p/m 0.6s |Iter: 106, T iter: 1.9s, T trans: 210.9s, T per iter: 2.0s p/m 0.1s, T rest: 88.7s p/m 0.5s |Iter: 111, T iter: 2.0s, T trans: 220.6s, T per iter: 2.0s p/m 0.1s, T rest: 78.8s p/m 0.5s |Iter: 116, T iter: 1.9s, T trans: 230.2s, T per iter: 2.0s p/m 0.1s, T rest: 68.9s p/m 0.5s |Iter: 121, T iter: 2.0s, T trans: 239.9s, T per iter: 2.0s p/m 0.1s, T rest: 59.0s p/m 0.4s |Iter: 126, T iter: 1.9s, T trans: 249.6s, T per iter: 2.0s p/m 0.1s, T rest: 49.1s p/m 0.4s |Iter: 131, T iter: 2.4s, T trans: 259.7s, T per iter: 2.0s p/m 0.1s, T rest: 39.3s p/m 0.4s |Iter: 136, T iter: 1.9s, T trans: 269.4s, T per iter: 2.0s p/m 0.1s, T rest: 29.5s p/m 0.3s |Iter: 141, T iter: 2.4s, T trans: 279.4s, T per iter: 2.0s p/m 0.1s, T rest: 19.7s p/m 0.3s |Iter: 146, T iter: 1.9s, T trans: 289.1s, T per iter: 2.0s p/m 0.1s, T rest: 9.8s p/m 0.2s </solve> Wall time: 4min 57s
%%time
segmentator.show_solution(
show_iters=[45, 55, 65]
)
plt.tight_layout()
Wall time: 83.1 ms
path_save_file_per_test["test_2"] = segmentator.path_save_file
plot_precision_recall(img_r, segmentator.iterations)
%%time
segmentator.set_stopfunct(
sgm=1,
lmbd=5,
)
<set_stopfunct> sigma: 1, lambda: 5 |gauss_min/max: (11, 213) |stopfunct_min/max: (0.005533421868083223, 1.0) </set_stopfunct> Wall time: 2 ms
%%time
segmentator.solve(
n_iter = 150,
tau = 0.1,
k = -5,
save_rate=10,
root_path_save="results",
show_log_rate=5
)
<solve> N° iteraciones: 150, discretizacion en tiempo: 0.1, constante k: -5 |path_save_file: results/2009_001314__iterations_times__sgm_1__lmbd_5__cx_0_4__cy_0_5__r_0_18__e_1__tau_0_1__k_-5 |Iter: 1, T iter: 1.9s, T trans: 3.8s, T per iter: 1.9s p/m 0.0s, T rest: 285.9s p/m 0.4s |Iter: 6, T iter: 1.9s, T trans: 13.5s, T per iter: 1.9s p/m 0.0s, T rest: 279.0s p/m 0.3s |Iter: 11, T iter: 1.9s, T trans: 23.2s, T per iter: 1.9s p/m 0.0s, T rest: 270.3s p/m 0.3s |Iter: 16, T iter: 1.9s, T trans: 32.9s, T per iter: 1.9s p/m 0.0s, T rest: 260.9s p/m 0.2s |Iter: 21, T iter: 2.0s, T trans: 42.6s, T per iter: 1.9s p/m 0.0s, T rest: 251.8s p/m 0.3s |Iter: 26, T iter: 2.0s, T trans: 52.4s, T per iter: 1.9s p/m 0.0s, T rest: 242.5s p/m 0.2s |Iter: 31, T iter: 1.9s, T trans: 62.0s, T per iter: 1.9s p/m 0.0s, T rest: 232.6s p/m 0.2s |Iter: 36, T iter: 2.0s, T trans: 71.8s, T per iter: 1.9s p/m 0.0s, T rest: 223.1s p/m 0.2s |Iter: 41, T iter: 2.4s, T trans: 82.1s, T per iter: 2.0s p/m 0.1s, T rest: 214.9s p/m 0.8s |Iter: 46, T iter: 1.9s, T trans: 91.8s, T per iter: 2.0s p/m 0.1s, T rest: 205.0s p/m 0.7s |Iter: 51, T iter: 2.2s, T trans: 101.8s, T per iter: 2.0s p/m 0.1s, T rest: 195.7s p/m 0.8s |Iter: 56, T iter: 1.9s, T trans: 111.4s, T per iter: 2.0s p/m 0.1s, T rest: 185.7s p/m 0.8s |Iter: 61, T iter: 2.3s, T trans: 121.4s, T per iter: 2.0s p/m 0.1s, T rest: 176.2s p/m 0.8s |Iter: 66, T iter: 2.0s, T trans: 131.2s, T per iter: 2.0s p/m 0.1s, T rest: 166.4s p/m 0.8s |Iter: 71, T iter: 2.3s, T trans: 141.2s, T per iter: 2.0s p/m 0.1s, T rest: 156.8s p/m 0.8s |Iter: 76, T iter: 1.9s, T trans: 150.8s, T per iter: 2.0s p/m 0.1s, T rest: 146.9s p/m 0.7s |Iter: 81, T iter: 2.2s, T trans: 160.8s, T per iter: 2.0s p/m 0.1s, T rest: 137.3s p/m 0.7s |Iter: 86, T iter: 1.9s, T trans: 170.6s, T per iter: 2.0s p/m 0.1s, T rest: 127.4s p/m 0.7s |Iter: 91, T iter: 2.3s, T trans: 180.7s, T per iter: 2.0s p/m 0.1s, T rest: 117.8s p/m 0.7s |Iter: 96, T iter: 1.9s, T trans: 190.4s, T per iter: 2.0s p/m 0.1s, T rest: 108.0s p/m 0.7s |Iter: 101, T iter: 2.3s, T trans: 200.5s, T per iter: 2.0s p/m 0.1s, T rest: 98.3s p/m 0.7s |Iter: 106, T iter: 2.0s, T trans: 210.3s, T per iter: 2.0s p/m 0.1s, T rest: 88.4s p/m 0.6s |Iter: 111, T iter: 2.0s, T trans: 220.0s, T per iter: 2.0s p/m 0.1s, T rest: 78.6s p/m 0.6s |Iter: 116, T iter: 2.0s, T trans: 229.8s, T per iter: 2.0s p/m 0.1s, T rest: 68.7s p/m 0.5s |Iter: 121, T iter: 2.1s, T trans: 239.7s, T per iter: 2.0s p/m 0.1s, T rest: 58.9s p/m 0.5s |Iter: 126, T iter: 1.9s, T trans: 249.4s, T per iter: 2.0s p/m 0.1s, T rest: 49.1s p/m 0.4s |Iter: 131, T iter: 2.1s, T trans: 259.2s, T per iter: 2.0s p/m 0.1s, T rest: 39.3s p/m 0.4s |Iter: 136, T iter: 2.0s, T trans: 269.0s, T per iter: 2.0s p/m 0.1s, T rest: 29.4s p/m 0.3s |Iter: 141, T iter: 2.1s, T trans: 278.9s, T per iter: 2.0s p/m 0.1s, T rest: 19.6s p/m 0.3s |Iter: 146, T iter: 2.0s, T trans: 288.7s, T per iter: 2.0s p/m 0.1s, T rest: 9.8s p/m 0.2s </solve> Wall time: 4min 56s
%%time
segmentator.show_solution(
show_iters=[45, 55, 65]
)
plt.tight_layout()
Wall time: 83.1 ms
path_save_file_per_test["test_3"] = segmentator.path_save_file
plot_precision_recall(img_r, segmentator.iterations)
%%time
id_name = pascal_images[1]
segmentator = LevelSetMethod(id_name=id_name)
segmentator.set_image(
dic_img_arr[id_name],
reshape=True,
norm=True
)
segmentator.show_image(grid=True)
<set_image> img: <class 'numpy.ndarray'>, reshape: True, norm: True |img_dim: [375 500] |img_min/max: (0, 147) |new_img_min/max(resize): (2.5611370807889267e-09, 6.44940883071381e-08) |new_dim: [ 75 100] |new_img_min/max(norm): (0, 255) |size_domain: 7500 </set_image> Wall time: 20 ms
%%time
segmentator.eval_stopfunct(
list_sgm=np.array([0.01, 0.5, 1]),
list_lmbd=np.array([15, 10, 5]),
cmap="viridis_r"
)
plt.tight_layout()
Wall time: 704 ms
%%time
segmentator.set_stopfunct(
sgm=0.5,
lmbd=5,
)
<set_stopfunct> sigma: 0.5, lambda: 5 |gauss_min/max: (3, 251) |stopfunct_min/max: (0.0014478484971332604, 1.0) </set_stopfunct> Wall time: 2 ms
%%time
segmentator.eval_sgndist(
c=np.array([0.5, 0.53]),
r=0.18,
e=1
)
Wall time: 21 ms
%%time
segmentator.set_sgndist(
c=np.array([0.5, 0.53]),
r=0.18,
e=1
)
<set_sgndist> centro: [0.5 0.53], radio: 0.18, excentricidad: 1 </set_sgndist> Wall time: 2 ms
%%time
segmentator.solve(
n_iter = 150,
tau = 0.1,
k = -5,
save_rate=10,
root_path_save="results",
show_log_rate=5
)
<solve> N° iteraciones: 150, discretizacion en tiempo: 0.1, constante k: -5 |path_save_file: results/2008_004621__iterations_times__sgm_0_5__lmbd_5__cx_0_5__cy_0_53__r_0_18__e_1__tau_0_1__k_-5 |Iter: 1, T iter: 1.9s, T trans: 3.5s, T per iter: 1.7s p/m 0.2s, T rest: 260.0s p/m 2.1s |Iter: 6, T iter: 1.7s, T trans: 11.4s, T per iter: 1.6s p/m 0.1s, T rest: 237.0s p/m 1.4s |Iter: 11, T iter: 1.6s, T trans: 19.5s, T per iter: 1.6s p/m 0.1s, T rest: 228.0s p/m 1.1s |Iter: 16, T iter: 1.6s, T trans: 27.4s, T per iter: 1.6s p/m 0.1s, T rest: 217.5s p/m 1.0s |Iter: 21, T iter: 1.6s, T trans: 35.3s, T per iter: 1.6s p/m 0.1s, T rest: 208.7s p/m 0.9s |Iter: 26, T iter: 1.6s, T trans: 43.1s, T per iter: 1.6s p/m 0.1s, T rest: 199.5s p/m 0.8s |Iter: 31, T iter: 1.6s, T trans: 51.0s, T per iter: 1.6s p/m 0.1s, T rest: 191.1s p/m 0.7s |Iter: 36, T iter: 1.6s, T trans: 58.9s, T per iter: 1.6s p/m 0.1s, T rest: 183.2s p/m 0.7s |Iter: 41, T iter: 2.0s, T trans: 67.4s, T per iter: 1.6s p/m 0.1s, T rest: 176.6s p/m 0.9s |Iter: 46, T iter: 1.6s, T trans: 75.3s, T per iter: 1.6s p/m 0.1s, T rest: 168.1s p/m 0.9s |Iter: 51, T iter: 1.6s, T trans: 83.4s, T per iter: 1.6s p/m 0.1s, T rest: 160.4s p/m 0.8s |Iter: 56, T iter: 1.6s, T trans: 91.4s, T per iter: 1.6s p/m 0.1s, T rest: 152.3s p/m 0.8s |Iter: 61, T iter: 1.6s, T trans: 99.3s, T per iter: 1.6s p/m 0.1s, T rest: 144.2s p/m 0.7s |Iter: 66, T iter: 1.6s, T trans: 107.2s, T per iter: 1.6s p/m 0.1s, T rest: 136.0s p/m 0.7s |Iter: 71, T iter: 1.6s, T trans: 115.0s, T per iter: 1.6s p/m 0.1s, T rest: 127.8s p/m 0.7s |Iter: 76, T iter: 1.6s, T trans: 122.8s, T per iter: 1.6s p/m 0.1s, T rest: 119.6s p/m 0.6s |Iter: 81, T iter: 1.7s, T trans: 131.0s, T per iter: 1.6s p/m 0.1s, T rest: 111.8s p/m 0.6s |Iter: 86, T iter: 1.6s, T trans: 139.0s, T per iter: 1.6s p/m 0.1s, T rest: 103.9s p/m 0.6s |Iter: 91, T iter: 1.7s, T trans: 147.0s, T per iter: 1.6s p/m 0.1s, T rest: 95.9s p/m 0.5s |Iter: 96, T iter: 1.6s, T trans: 155.0s, T per iter: 1.6s p/m 0.1s, T rest: 87.9s p/m 0.5s |Iter: 101, T iter: 1.6s, T trans: 162.9s, T per iter: 1.6s p/m 0.1s, T rest: 79.8s p/m 0.5s |Iter: 106, T iter: 1.6s, T trans: 170.8s, T per iter: 1.6s p/m 0.1s, T rest: 71.8s p/m 0.4s |Iter: 111, T iter: 1.6s, T trans: 178.7s, T per iter: 1.6s p/m 0.1s, T rest: 63.8s p/m 0.4s |Iter: 116, T iter: 1.6s, T trans: 186.5s, T per iter: 1.6s p/m 0.1s, T rest: 55.8s p/m 0.4s |Iter: 121, T iter: 1.6s, T trans: 194.5s, T per iter: 1.6s p/m 0.1s, T rest: 47.8s p/m 0.3s |Iter: 126, T iter: 1.6s, T trans: 202.5s, T per iter: 1.6s p/m 0.1s, T rest: 39.9s p/m 0.3s |Iter: 131, T iter: 1.6s, T trans: 210.4s, T per iter: 1.6s p/m 0.1s, T rest: 31.9s p/m 0.3s |Iter: 136, T iter: 1.6s, T trans: 218.3s, T per iter: 1.6s p/m 0.1s, T rest: 23.9s p/m 0.2s |Iter: 141, T iter: 1.7s, T trans: 226.3s, T per iter: 1.6s p/m 0.1s, T rest: 15.9s p/m 0.2s |Iter: 146, T iter: 1.6s, T trans: 234.2s, T per iter: 1.6s p/m 0.1s, T rest: 8.0s p/m 0.1s </solve> Wall time: 4min
%%time
segmentator.show_solution(
show_iters=[45, 50, 65]
)
plt.tight_layout()
Wall time: 644 ms
path_save_file_per_test["test_4"] = segmentator.path_save_file
img_r = get_groud_truth(segmentator.id_name)
plt.imshow(img_r, cmap=ListedColormap(['black','tab:red']));
plot_precision_recall(img_r, segmentator.iterations)
%%time
id_name = pascal_images[2]
segmentator = LevelSetMethod(id_name=id_name)
segmentator.set_image(
dic_img_arr[id_name],
reshape=True,
norm=True
)
segmentator.show_image(grid=True)
<set_image> img: <class 'numpy.ndarray'>, reshape: True, norm: True |img_dim: [500 326] |img_min/max: (0, 255) |new_img_min/max(resize): (3.7037982399100635e-09, 1.1491087769469535e-07) |new_dim: [100 65] |new_img_min/max(norm): (0, 255) |size_domain: 6500 </set_image> Wall time: 18 ms
%%time
segmentator.eval_stopfunct(
list_sgm=np.array([0.01, 0.5, 1]),
list_lmbd=np.array([15, 10, 5]),
cmap="viridis_r"
)
plt.tight_layout()
Wall time: 267 ms
%%time
segmentator.set_stopfunct(
sgm=0.05,
lmbd=10,
)
<set_stopfunct> sigma: 0.05, lambda: 10 |gauss_min/max: (0, 255) |stopfunct_min/max: (0.003928809963462067, 1.0) </set_stopfunct> Wall time: 1 ms
%%time
segmentator.eval_sgndist(
c=np.array([0.4, 0.62]),
r=0.23,
e=0.57
)
Wall time: 18 ms
%%time
segmentator.set_sgndist(
c=np.array([0.4, 0.62]),
r=0.23,
e=0.57
)
<set_sgndist> centro: [0.4 0.62], radio: 0.23, excentricidad: 0.57 </set_sgndist> Wall time: 1 ms
%%time
segmentator.solve(
n_iter = 150,
tau = 0.1,
k = -5,
save_rate=10,
root_path_save="results",
show_log_rate=5
)
<solve> N° iteraciones: 150, discretizacion en tiempo: 0.1, constante k: -5 |path_save_file: results/2008_002247__iterations_times__sgm_0_05__lmbd_10__cx_0_4__cy_0_62__r_0_23__e_0_57__tau_0_1__k_-5 |Iter: 1, T iter: 1.4s, T trans: 2.4s, T per iter: 1.2s p/m 0.2s, T rest: 176.7s p/m 2.5s |Iter: 6, T iter: 1.0s, T trans: 7.4s, T per iter: 1.1s p/m 0.1s, T rest: 154.0s p/m 1.6s |Iter: 11, T iter: 1.1s, T trans: 12.7s, T per iter: 1.1s p/m 0.1s, T rest: 148.5s p/m 1.2s |Iter: 16, T iter: 1.1s, T trans: 18.1s, T per iter: 1.1s p/m 0.1s, T rest: 143.7s p/m 1.0s |Iter: 21, T iter: 1.1s, T trans: 23.4s, T per iter: 1.1s p/m 0.1s, T rest: 138.3s p/m 0.9s |Iter: 26, T iter: 1.1s, T trans: 28.8s, T per iter: 1.1s p/m 0.1s, T rest: 133.3s p/m 0.8s |Iter: 31, T iter: 1.1s, T trans: 34.2s, T per iter: 1.1s p/m 0.1s, T rest: 128.3s p/m 0.7s |Iter: 36, T iter: 1.1s, T trans: 39.6s, T per iter: 1.1s p/m 0.1s, T rest: 123.2s p/m 0.7s |Iter: 41, T iter: 1.1s, T trans: 45.2s, T per iter: 1.1s p/m 0.1s, T rest: 118.4s p/m 0.7s |Iter: 46, T iter: 1.1s, T trans: 50.6s, T per iter: 1.1s p/m 0.1s, T rest: 113.1s p/m 0.6s |Iter: 51, T iter: 1.1s, T trans: 56.0s, T per iter: 1.1s p/m 0.1s, T rest: 107.8s p/m 0.6s |Iter: 56, T iter: 1.2s, T trans: 61.6s, T per iter: 1.1s p/m 0.1s, T rest: 102.6s p/m 0.6s |Iter: 61, T iter: 1.1s, T trans: 67.2s, T per iter: 1.1s p/m 0.1s, T rest: 97.6s p/m 0.5s |Iter: 66, T iter: 1.1s, T trans: 72.7s, T per iter: 1.1s p/m 0.1s, T rest: 92.3s p/m 0.5s |Iter: 71, T iter: 1.1s, T trans: 78.3s, T per iter: 1.1s p/m 0.1s, T rest: 87.0s p/m 0.5s |Iter: 76, T iter: 1.1s, T trans: 83.6s, T per iter: 1.1s p/m 0.1s, T rest: 81.4s p/m 0.5s |Iter: 81, T iter: 1.0s, T trans: 88.8s, T per iter: 1.1s p/m 0.1s, T rest: 75.8s p/m 0.4s |Iter: 86, T iter: 1.1s, T trans: 94.0s, T per iter: 1.1s p/m 0.1s, T rest: 70.2s p/m 0.4s |Iter: 91, T iter: 1.1s, T trans: 99.4s, T per iter: 1.1s p/m 0.1s, T rest: 64.8s p/m 0.4s |Iter: 96, T iter: 1.0s, T trans: 104.6s, T per iter: 1.1s p/m 0.1s, T rest: 59.3s p/m 0.4s |Iter: 101, T iter: 1.1s, T trans: 109.9s, T per iter: 1.1s p/m 0.1s, T rest: 53.9s p/m 0.4s |Iter: 106, T iter: 1.0s, T trans: 115.2s, T per iter: 1.1s p/m 0.1s, T rest: 48.5s p/m 0.3s |Iter: 111, T iter: 1.1s, T trans: 120.6s, T per iter: 1.1s p/m 0.0s, T rest: 43.1s p/m 0.3s |Iter: 116, T iter: 1.0s, T trans: 125.8s, T per iter: 1.1s p/m 0.0s, T rest: 37.6s p/m 0.3s |Iter: 121, T iter: 1.1s, T trans: 131.0s, T per iter: 1.1s p/m 0.0s, T rest: 32.2s p/m 0.3s |Iter: 126, T iter: 1.1s, T trans: 136.4s, T per iter: 1.1s p/m 0.0s, T rest: 26.8s p/m 0.2s |Iter: 131, T iter: 1.1s, T trans: 141.9s, T per iter: 1.1s p/m 0.0s, T rest: 21.5s p/m 0.2s |Iter: 136, T iter: 1.0s, T trans: 147.2s, T per iter: 1.1s p/m 0.0s, T rest: 16.1s p/m 0.2s |Iter: 141, T iter: 1.2s, T trans: 152.7s, T per iter: 1.1s p/m 0.0s, T rest: 10.8s p/m 0.1s |Iter: 146, T iter: 1.1s, T trans: 158.1s, T per iter: 1.1s p/m 0.0s, T rest: 5.4s p/m 0.1s </solve> Wall time: 2min 42s
%%time
segmentator.show_solution(
show_iters=[45, 50, 150]
)
plt.tight_layout()
Wall time: 1.08 s
path_save_file_per_test["test_5"] = segmentator.path_save_file
img_r = get_groud_truth(segmentator.id_name)
plt.imshow(img_r, cmap=ListedColormap(['black','tab:red']));
plot_precision_recall(img_r, segmentator.iterations)
%%time
id_name = pascal_images[3]
segmentator = LevelSetMethod(id_name=id_name)
segmentator.set_image(
dic_img_arr[id_name],
reshape=True,
norm=True
)
segmentator.show_image(grid=True)
<set_image> img: <class 'numpy.ndarray'>, reshape: True, norm: True |img_dim: [319 500] |img_min/max: (25, 255) |new_img_min/max(resize): (2.584420145159685e-08, 1.1757947507258027e-07) |new_dim: [ 63 100] |new_img_min/max(norm): (0, 255) |size_domain: 6300 </set_image> Wall time: 17 ms
%%time
segmentator.eval_stopfunct(
list_sgm=np.array([0.01, 0.5, 1]),
list_lmbd=np.array([15, 5, 1]),
cmap="viridis_r"
)
plt.tight_layout()
Wall time: 173 ms
segmentator.set_stopfunct(
sgm=0.01,
lmbd=5
)
<set_stopfunct> sigma: 0.01, lambda: 5 |gauss_min/max: (0, 255) |stopfunct_min/max: (0.0007370500309561012, 1.0) </set_stopfunct>
%%time
segmentator.eval_sgndist(
c=np.array([0.5, 0.5]),
r=0.14,
e=1.8
)
Wall time: 18 ms
%%time
segmentator.set_sgndist(
c=np.array([0.5, 0.5]),
r=0.14,
e=1.8
)
<set_sgndist> centro: [0.5 0.5], radio: 0.14, excentricidad: 1.8 </set_sgndist> Wall time: 1 ms
%%time
segmentator.solve(
n_iter = 150,
tau = 0.1,
k = -5,
save_rate=10,
root_path_save="results",
show_log_rate=5
)
<solve> N° iteraciones: 150, discretizacion en tiempo: 0.1, constante k: -5 |path_save_file: results/2007_004052__iterations_times__sgm_0_01__lmbd_5__cx_0_5__cy_0_5__r_0_14__e_1_8__tau_0_1__k_-5 |Iter: 1, T iter: 1.4s, T trans: 2.4s, T per iter: 1.2s p/m 0.2s, T rest: 176.5s p/m 2.7s |Iter: 6, T iter: 1.0s, T trans: 7.3s, T per iter: 1.0s p/m 0.1s, T rest: 151.9s p/m 1.7s |Iter: 11, T iter: 1.0s, T trans: 12.3s, T per iter: 1.0s p/m 0.1s, T rest: 143.8s p/m 1.3s |Iter: 16, T iter: 1.0s, T trans: 17.4s, T per iter: 1.0s p/m 0.1s, T rest: 138.3s p/m 1.1s |Iter: 21, T iter: 1.0s, T trans: 22.5s, T per iter: 1.0s p/m 0.1s, T rest: 132.8s p/m 1.0s |Iter: 26, T iter: 1.0s, T trans: 27.5s, T per iter: 1.0s p/m 0.1s, T rest: 127.2s p/m 0.9s |Iter: 31, T iter: 1.0s, T trans: 32.5s, T per iter: 1.0s p/m 0.1s, T rest: 121.9s p/m 0.8s |Iter: 36, T iter: 1.0s, T trans: 37.4s, T per iter: 1.0s p/m 0.1s, T rest: 116.3s p/m 0.7s |Iter: 41, T iter: 1.1s, T trans: 42.6s, T per iter: 1.0s p/m 0.1s, T rest: 111.4s p/m 0.7s |Iter: 46, T iter: 1.0s, T trans: 47.5s, T per iter: 1.0s p/m 0.1s, T rest: 106.1s p/m 0.6s |Iter: 51, T iter: 1.0s, T trans: 52.5s, T per iter: 1.0s p/m 0.1s, T rest: 101.0s p/m 0.6s |Iter: 56, T iter: 1.0s, T trans: 57.5s, T per iter: 1.0s p/m 0.1s, T rest: 95.9s p/m 0.5s |Iter: 61, T iter: 1.0s, T trans: 62.5s, T per iter: 1.0s p/m 0.1s, T rest: 90.7s p/m 0.5s |Iter: 66, T iter: 1.0s, T trans: 67.4s, T per iter: 1.0s p/m 0.1s, T rest: 85.5s p/m 0.5s |Iter: 71, T iter: 1.0s, T trans: 72.4s, T per iter: 1.0s p/m 0.1s, T rest: 80.4s p/m 0.5s |Iter: 76, T iter: 1.0s, T trans: 77.3s, T per iter: 1.0s p/m 0.0s, T rest: 75.3s p/m 0.4s |Iter: 81, T iter: 1.0s, T trans: 82.3s, T per iter: 1.0s p/m 0.0s, T rest: 70.3s p/m 0.4s |Iter: 86, T iter: 1.0s, T trans: 87.3s, T per iter: 1.0s p/m 0.0s, T rest: 65.2s p/m 0.4s |Iter: 91, T iter: 1.0s, T trans: 92.2s, T per iter: 1.0s p/m 0.0s, T rest: 60.2s p/m 0.4s |Iter: 96, T iter: 1.0s, T trans: 97.4s, T per iter: 1.0s p/m 0.0s, T rest: 55.2s p/m 0.3s |Iter: 101, T iter: 1.0s, T trans: 102.5s, T per iter: 1.0s p/m 0.0s, T rest: 50.3s p/m 0.3s |Iter: 106, T iter: 1.1s, T trans: 107.7s, T per iter: 1.0s p/m 0.0s, T rest: 45.3s p/m 0.3s |Iter: 111, T iter: 1.1s, T trans: 112.8s, T per iter: 1.0s p/m 0.0s, T rest: 40.3s p/m 0.3s |Iter: 116, T iter: 1.0s, T trans: 117.8s, T per iter: 1.0s p/m 0.0s, T rest: 35.2s p/m 0.3s |Iter: 121, T iter: 1.1s, T trans: 122.8s, T per iter: 1.0s p/m 0.0s, T rest: 30.2s p/m 0.2s |Iter: 126, T iter: 1.0s, T trans: 127.9s, T per iter: 1.0s p/m 0.0s, T rest: 25.2s p/m 0.2s |Iter: 131, T iter: 1.0s, T trans: 132.9s, T per iter: 1.0s p/m 0.0s, T rest: 20.1s p/m 0.2s |Iter: 136, T iter: 1.0s, T trans: 137.8s, T per iter: 1.0s p/m 0.0s, T rest: 15.1s p/m 0.2s |Iter: 141, T iter: 1.1s, T trans: 142.9s, T per iter: 1.0s p/m 0.0s, T rest: 10.1s p/m 0.1s |Iter: 146, T iter: 1.0s, T trans: 147.8s, T per iter: 1.0s p/m 0.0s, T rest: 5.0s p/m 0.1s </solve> Wall time: 2min 31s
%%time
segmentator.show_solution(
show_iters=[45, 50, 150]
)
plt.tight_layout()
Wall time: 86.1 ms
path_save_file_per_test["test_6"] = segmentator.path_save_file
img_r = get_groud_truth(segmentator.id_name)
plt.imshow(img_r, cmap=ListedColormap(['black','tab:red']));
plot_precision_recall(img_r, segmentator.iterations)
%%time
id_name = pascal_images[4]
segmentator = LevelSetMethod(id_name=id_name)
segmentator.set_image(
dic_img_arr[id_name],
reshape=True,
norm=True
)
segmentator.show_image(grid=True)
<set_image> img: <class 'numpy.ndarray'>, reshape: True, norm: True |img_dim: [358 500] |img_min/max: (0, 255) |new_img_min/max(resize): (2.561137080788877e-09, 1.1026334597240103e-07) |new_dim: [ 71 100] |new_img_min/max(norm): (0, 255) |size_domain: 7100 </set_image> Wall time: 17.5 ms
%%time
segmentator.eval_stopfunct(
list_sgm=np.array([0.01, 0.5, 1]),
list_lmbd=np.array([20, 10, 5]),
cmap="viridis_r"
)
plt.tight_layout()
Wall time: 234 ms
segmentator.set_stopfunct(
sgm=0.01,
lmbd=10
)
<set_stopfunct> sigma: 0.01, lambda: 10 |gauss_min/max: (0, 255) |stopfunct_min/max: (0.00261882938326568, 1.0) </set_stopfunct>
%%time
segmentator.eval_sgndist(
c=np.array([0.5, 0.54]),
r=0.14,
e=1.5
)
Wall time: 20 ms
%%time
segmentator.set_sgndist(
c=np.array([0.5, 0.54]),
r=0.14,
e=1.5
)
<set_sgndist> centro: [0.5 0.54], radio: 0.14, excentricidad: 1.5 </set_sgndist> Wall time: 1 ms
%%time
segmentator.solve(
n_iter = 150,
tau = 0.1,
k = -5,
save_rate=10,
root_path_save="results",
show_log_rate=5
)
<solve> N° iteraciones: 150, discretizacion en tiempo: 0.1, constante k: -5 |path_save_file: results/2009_005078__iterations_times__sgm_0_01__lmbd_10__cx_0_5__cy_0_54__r_0_14__e_1_5__tau_0_1__k_-5 |Iter: 1, T iter: 1.7s, T trans: 3.2s, T per iter: 1.6s p/m 0.1s, T rest: 236.9s p/m 1.8s |Iter: 6, T iter: 1.3s, T trans: 9.5s, T per iter: 1.4s p/m 0.2s, T rest: 195.9s p/m 2.0s |Iter: 11, T iter: 1.2s, T trans: 15.8s, T per iter: 1.3s p/m 0.1s, T rest: 184.2s p/m 1.6s |Iter: 16, T iter: 1.3s, T trans: 22.2s, T per iter: 1.3s p/m 0.1s, T rest: 176.1s p/m 1.3s |Iter: 21, T iter: 1.3s, T trans: 28.7s, T per iter: 1.3s p/m 0.1s, T rest: 169.6s p/m 1.1s |Iter: 26, T iter: 1.3s, T trans: 35.3s, T per iter: 1.3s p/m 0.1s, T rest: 163.5s p/m 1.0s |Iter: 31, T iter: 1.3s, T trans: 41.8s, T per iter: 1.3s p/m 0.1s, T rest: 156.7s p/m 0.9s |Iter: 36, T iter: 1.3s, T trans: 48.3s, T per iter: 1.3s p/m 0.1s, T rest: 150.3s p/m 0.8s |Iter: 41, T iter: 1.3s, T trans: 54.8s, T per iter: 1.3s p/m 0.1s, T rest: 143.6s p/m 0.8s |Iter: 46, T iter: 1.3s, T trans: 61.1s, T per iter: 1.3s p/m 0.1s, T rest: 136.6s p/m 0.7s |Iter: 51, T iter: 1.3s, T trans: 67.5s, T per iter: 1.3s p/m 0.1s, T rest: 129.9s p/m 0.7s |Iter: 56, T iter: 1.3s, T trans: 73.9s, T per iter: 1.3s p/m 0.1s, T rest: 123.1s p/m 0.6s |Iter: 61, T iter: 1.3s, T trans: 80.2s, T per iter: 1.3s p/m 0.1s, T rest: 116.4s p/m 0.6s |Iter: 66, T iter: 1.2s, T trans: 86.5s, T per iter: 1.3s p/m 0.1s, T rest: 109.7s p/m 0.6s |Iter: 71, T iter: 1.3s, T trans: 92.8s, T per iter: 1.3s p/m 0.1s, T rest: 103.1s p/m 0.6s |Iter: 76, T iter: 1.2s, T trans: 99.0s, T per iter: 1.3s p/m 0.1s, T rest: 96.4s p/m 0.5s |Iter: 81, T iter: 1.3s, T trans: 105.3s, T per iter: 1.3s p/m 0.1s, T rest: 89.9s p/m 0.5s |Iter: 86, T iter: 1.2s, T trans: 111.5s, T per iter: 1.3s p/m 0.1s, T rest: 83.3s p/m 0.5s |Iter: 91, T iter: 1.3s, T trans: 117.5s, T per iter: 1.3s p/m 0.1s, T rest: 76.7s p/m 0.5s |Iter: 96, T iter: 1.2s, T trans: 123.5s, T per iter: 1.3s p/m 0.1s, T rest: 70.1s p/m 0.4s |Iter: 101, T iter: 1.4s, T trans: 129.7s, T per iter: 1.3s p/m 0.1s, T rest: 63.6s p/m 0.4s |Iter: 106, T iter: 1.2s, T trans: 136.0s, T per iter: 1.3s p/m 0.1s, T rest: 57.2s p/m 0.4s |Iter: 111, T iter: 1.3s, T trans: 142.1s, T per iter: 1.3s p/m 0.1s, T rest: 50.7s p/m 0.4s |Iter: 116, T iter: 1.3s, T trans: 148.3s, T per iter: 1.3s p/m 0.1s, T rest: 44.4s p/m 0.3s |Iter: 121, T iter: 1.3s, T trans: 154.8s, T per iter: 1.3s p/m 0.1s, T rest: 38.1s p/m 0.3s |Iter: 126, T iter: 1.2s, T trans: 160.9s, T per iter: 1.3s p/m 0.1s, T rest: 31.7s p/m 0.3s |Iter: 131, T iter: 1.3s, T trans: 167.1s, T per iter: 1.3s p/m 0.1s, T rest: 25.3s p/m 0.3s |Iter: 136, T iter: 1.2s, T trans: 173.2s, T per iter: 1.3s p/m 0.1s, T rest: 19.0s p/m 0.2s |Iter: 141, T iter: 1.4s, T trans: 179.7s, T per iter: 1.3s p/m 0.1s, T rest: 12.7s p/m 0.2s |Iter: 146, T iter: 1.3s, T trans: 186.1s, T per iter: 1.3s p/m 0.1s, T rest: 6.3s p/m 0.1s </solve> Wall time: 3min 11s
%%time
segmentator.show_solution(
show_iters=[35, 50, 75]
)
plt.tight_layout()
Wall time: 1.18 s
path_save_file_per_test["test_7"] = segmentator.path_save_file
img_r = get_groud_truth(segmentator.id_name)
plt.imshow(img_r, cmap=ListedColormap(['black','tab:red']));
plot_precision_recall(img_r, segmentator.iterations)
%%time
test_k = "test_5"
path_save_file = path_save_file_per_test[test_k]
id_name = path_save_file.split("__")[0].split("/")[1]
print(path_save_file)
iterations, times = pickle.load(open(path_save_file_per_test[test_k]+".pickle", "rb"))
img_r = get_groud_truth(id_name)
img_o = Image.open(f"dataset/database_pascal/{id_name}.jpg")
fig, ax = plt.subplots(2, 2, figsize=(2*3.5, 3.5*2), constrained_layout=False)
cmap_sgndist = "RdGy_r"
cmap_pr = "winter_r"
clf = [(un>0).astype(int) for un in iterations]
precision_recall_curve = [precision_recall(img_r, clf_k, pos_label=1) for clf_k in clf]
precision = np.array([prc_k[0] for prc_k in precision_recall_curve])
recall = np.array([prc_k[1] for prc_k in precision_recall_curve])
mask_0 = np.isclose(precision+recall, 0)
mask_1 = ~mask_0
best_iter= np.argmax( mask_1*(2*precision*recall)/(precision+recall+mask_0) )
ax[0,0].imshow(img_o)
ax[0,1].imshow(img_r, cmap=ListedColormap(['black','tab:red']))
ax[1,1].imshow(clf[best_iter], cmap=ListedColormap(['black','tab:red']))
ax[1,0].grid()
ax[1,0].scatter(precision, recall, c=range(len(precision_recall_curve)), cmap=cmap_pr)
ax[1,0].scatter([precision[best_iter]], [recall[best_iter]], c="red", s=50, label=f"Iter: {best_iter}\nRecall: {100*recall[best_iter]: .1f}\%\nPrecision: {100*precision[best_iter]: .1f}\%")
ax[1,0].set_yticks(np.linspace(3/4, 1, 5).round(2));
ax[1,0].set_xticks(np.linspace(3/4, 1, 5).round(2));
plt_eps = 0.01
plt.xticks(fontsize=18*0.8)
plt.yticks(fontsize=18*0.8)
ax[1,0].set_xlim([3/4-plt_eps, 1+plt_eps])
ax[1,0].set_ylim([3/4-plt_eps, 1+plt_eps])
ax[1,0].legend(fontsize=18*0.8)
ax[1,0].set_aspect('equal')
ax[0,0].set_xticks([])
ax[0,0].set_yticks([])
ax[0,1].set_xticks([])
ax[0,1].set_yticks([])
ax[1,1].set_xticks([])
ax[1,1].set_yticks([]);
ax[1,1].set_title("Conjunto de nivel\npositivo", size=18)
ax[1,1].set_xlabel(f"Iteración {best_iter}", size=18)
ax[0,1].set_title("Target", size=18)
ax[0,0].set_title("Imagen original", size=18)
# ax[1,1].set_xlabel(f"Iteración {best_iter}", size=18)
ax[1,0].set_ylabel("Recall", fontsize=18)
ax[1,0].set_xlabel("Precision", fontsize=18)
ax[1,0].set_title("Precision vs Recall", size=18)
plt.tight_layout()
fig.savefig(f"PASCAL_{test_k}.pdf", bbox_inches='tight')
results/2008_002247__iterations_times__sgm_0_05__lmbd_10__cx_0_4__cy_0_62__r_0_23__e_0_57__tau_0_1__k_-5 Wall time: 348 ms
%%time
iterations_0, _ = pickle.load(open(path_save_file_per_test["test_0"]+".pickle", "rb"))
iterations_1, _ = pickle.load(open(path_save_file_per_test["test_1"]+".pickle", "rb"))
iterations_2, _ = pickle.load(open(path_save_file_per_test["test_2"]+".pickle", "rb"))
iterations_3, _ = pickle.load(open(path_save_file_per_test["test_3"]+".pickle", "rb"))
print(path_save_file_per_test["test_0"], path_save_file_per_test["test_1"], path_save_file_per_test["test_2"], path_save_file_per_test["test_3"], sep="\n")
results/2009_001314__iterations_times__sgm_0_01__lmbd_5__cx_0_4__cy_0_5__r_0_18__e_1__tau_0_1__k_-5 results/2009_001314__iterations_times__sgm_0_01__lmbd_15__cx_0_4__cy_0_5__r_0_18__e_1__tau_0_1__k_-5 results/2009_001314__iterations_times__sgm_0_01__lmbd_1__cx_0_4__cy_0_5__r_0_18__e_1__tau_0_1__k_-5 results/2009_001314__iterations_times__sgm_1__lmbd_5__cx_0_4__cy_0_5__r_0_18__e_1__tau_0_1__k_-5 Wall time: 24 ms
id_name = pascal_images[0]
dim = [91, 100]
cmap_sgndist = "RdGy_r"
img_r = get_groud_truth(id_name)
img_o = Image.open(f"dataset/database_pascal/{id_name}.jpg")
clf_0 = [(un>0).astype(int) for un in iterations_0]
clf_1 = [(un>0).astype(int) for un in iterations_1]
clf_2 = [(un>0).astype(int) for un in iterations_2]
clf_3 = [(un>0).astype(int) for un in iterations_3]
precision_recall_curve_0 = [precision_recall(img_r, clf_k, pos_label=1) for clf_k in clf_0]
precision_0 = np.array([prc_k[0] for prc_k in precision_recall_curve_0])
recall_0 = np.array([prc_k[1] for prc_k in precision_recall_curve_0])
precision_recall_curve_1 = [precision_recall(img_r, clf_k, pos_label=1) for clf_k in clf_1]
precision_1 = np.array([prc_k[0] for prc_k in precision_recall_curve_1])
recall_1 = np.array([prc_k[1] for prc_k in precision_recall_curve_1])
precision_recall_curve_2 = [precision_recall(img_r, clf_k, pos_label=1) for clf_k in clf_2]
precision_2 = np.array([prc_k[0] for prc_k in precision_recall_curve_2])
recall_2 = np.array([prc_k[1] for prc_k in precision_recall_curve_2])
precision_recall_curve_3 = [precision_recall(img_r, clf_k, pos_label=1) for clf_k in clf_3]
precision_3 = np.array([prc_k[0] for prc_k in precision_recall_curve_3])
recall_3 = np.array([prc_k[1] for prc_k in precision_recall_curve_3])
# %%time
fig = plt.figure(figsize=(8*3,8*2))
cmap_pr = "hot_r"
plt_eps = 0.01
iter_k = 55
sgm_lmbd_0 = (0.01, 5) #0
sgm_lmbd_1 = (0.01, 15) #1
zz_0 = iterations_0[iter_k]
zz_1 = iterations_1[iter_k]
p_0 = precision_0
r_0 = recall_0
p_1 = precision_1
r_1 = recall_1
# sgm_lmbd_0 = (0.01, 5) #0
# sgm_lmbd_1 = (0.01, 1) #2
# zz_0 = iterations_0[iter_k]
# zz_1 = iterations_2[iter_k]
# p_0 = precision_0
# r_0 = recall_0
# p_1 = precision_2
# r_1 = recall_2
# sgm_lmbd_0 = (0.01, 5) #0
# sgm_lmbd_1 = (1, 5) #3
# zz_0 = iterations_0[iter_k]
# zz_1 = iterations_3[iter_k]
# p_0 = precision_0
# r_0 = recall_0
# p_1 = precision_3
# r_1 = recall_3
x = np.linspace(0, 1, dim[1])
y = np.linspace(0, 1, dim[0])
xx, yy = np.meshgrid(x, y)
ax1 = fig.add_subplot(231)
ax2 = fig.add_subplot(232)
ax3 = fig.add_subplot(233)
ax4 = fig.add_subplot(234)
ax5 = fig.add_subplot(235)
ax6 = fig.add_subplot(236)
ax1.imshow(img_o)
ax4.imshow(img_r, cmap=ListedColormap(['black','tab:red']))
ax2.imshow((zz_0>0), cmap=ListedColormap(['black','tab:red']))
ax5.imshow((zz_1>0), cmap=ListedColormap(['black','tab:red']))
ax3.scatter(p_0[:iter_k], r_0[:iter_k], c=range(iter_k), cmap=cmap_pr, s=50*3)
ax6.scatter(p_1[:iter_k], r_0[:iter_k], c=range(iter_k), cmap=cmap_pr, s=50*3)
ax1.set_xticks([])
ax1.set_yticks([])
ax4.set_xticks([])
ax4.set_yticks([])
ax2.set_xticks([])
ax2.set_yticks([])
ax5.set_xticks([])
ax5.set_yticks([])
ax3.set_yticks(np.linspace(3/4, 1, 5).round(2));
ax3.set_xticks(np.linspace(3/4, 1, 5).round(2));
ax3.set_xticklabels(["" for _ in range(5)]);
ax3.tick_params(labelsize = 24)
ax3.grid()
ax3.set_xlim([3/4-plt_eps, 1+plt_eps])
ax3.set_ylim([3/4-plt_eps, 1+plt_eps])
ax3.set_ylabel("Recall", fontsize=18*2, rotation=270)
ax3.yaxis.set_label_coords(1.01, 0.5)
ax6.set_yticks(np.linspace(3/4, 1, 5).round(2));
ax6.set_xticks(np.linspace(3/4, 1, 5).round(2));
ax6.tick_params(labelsize = 24)
ax6.grid()
ax6.set_xlim([3/4-plt_eps, 1+plt_eps])
ax6.set_ylim([3/4-plt_eps, 1+plt_eps])
ax6.set_ylabel("Recall", fontsize=18*2, rotation=270)
ax6.yaxis.set_label_coords(1.01, 0.5)
ax6.set_xlabel("Precision", fontsize=18*2)
ax1.set_title(id_name, size=18*2)
ax2.set_title("Conjunto de nivel\npositivo", size=18*2)
ax3.set_title("Precision vs Recall", size=18*2)
ax1.set_ylabel("Imagen original", size=18*2)
ax4.set_ylabel("Target", size=18*2)
ax2.set_ylabel(f"(sigma, lambda) = {str(sgm_lmbd_0)}", size=18*2)
ax5.set_ylabel(f"(sigma, lambda) = {str(sgm_lmbd_1)}", size=18*2)
ax5.set_xlabel(f"Iteración {iter_k}", size=18*3)
ax5.xaxis.set_label_coords(0.5, -0.1)
plt.tight_layout()
# %%time
fps = 250
frn = 150
id_test = "0_3"
# sgm_lmbd_0 = (0.01, 5) #0
# sgm_lmbd_1 = (0.01, 15) #1
# zz_0 = iterations_0
# zz_1 = iterations_1
# p_0 = precision_0
# r_0 = recall_0
# p_1 = precision_1
# r_1 = recall_1
# sgm_lmbd_0 = (0.01, 5) #0
# sgm_lmbd_1 = (0.01, 1) #2
# zz_0 = iterations_0
# zz_1 = iterations_2
# p_0 = precision_0
# r_0 = recall_0
# p_1 = precision_2
# r_1 = recall_2
sgm_lmbd_0 = (0.01, 5) #0
sgm_lmbd_1 = (1, 5) #3
zz_0 = iterations_0
zz_1 = iterations_3
p_0 = precision_0
r_0 = recall_0
p_1 = precision_3
r_1 = recall_3
zarray_0 = np.zeros((dim[0], dim[1], frn))
zarray_1 = np.zeros((dim[0], dim[1], frn))
parray_0 = np.zeros(frn+1)
parray_1 = np.zeros(frn+1)
rarray_0 = np.zeros(frn+1)
rarray_1 = np.zeros(frn+1)
for i in range(frn):
zarray_0[:, :, i] = zz_0[i]
zarray_1[:, :, i] = zz_1[i]
parray_0[i+1] = p_0[i]
parray_1[i+1] = p_1[i]
rarray_0[i+1] = r_0[i]
rarray_1[i+1] = r_1[i]
zarray = np.array([zarray_0, zarray_1])
parray = np.array([parray_0, parray_1])
rarray = np.array([rarray_0, rarray_1])
def change_plot(frame_number, zarray, parray, rarray, plot):
plot[0].remove()
plot[0] = ax1.imshow(img_o)
plot[1].remove()
plot[1] = ax2.imshow((zarray[0][:, :, frame_number]>0), cmap=ListedColormap(['black','tab:red']))
plot[2].remove()
plot[2] = ax3.scatter(parray[0][:frame_number+1], rarray[0][:frame_number+1], c=range(frame_number+1), cmap=cmap_pr, s=50*3)
plot[3].remove()
plot[3] = ax4.imshow(img_r, cmap=ListedColormap(['black','tab:red']))
plot[4].remove()
plot[4] = ax5.imshow((zarray[1][:, :, frame_number]>0), cmap=ListedColormap(['black','tab:red']))
plot[5].remove()
plot[5] = ax6.scatter(parray[1][:frame_number+1], rarray[1][:frame_number+1], c=range(frame_number+1), cmap=cmap_pr, s=50*3)
ax1.set_xticks([])
ax1.set_yticks([])
ax4.set_xticks([])
ax4.set_yticks([])
ax2.set_xticks([])
ax2.set_yticks([])
ax5.set_xticks([])
ax5.set_yticks([])
ax3.set_yticks(np.linspace(3/4, 1, 5).round(2));
ax3.set_xticks(np.linspace(3/4, 1, 5).round(2));
ax3.set_xticklabels(["" for _ in range(5)]);
ax3.tick_params(labelsize = 24)
# ax3.grid()
ax3.set_xlim([3/4-plt_eps, 1+plt_eps])
ax3.set_ylim([3/4-plt_eps, 1+plt_eps])
ax3.set_ylabel("Recall", fontsize=18*2, rotation=270)
ax3.yaxis.set_label_coords(1.01, 0.5)
ax6.set_yticks(np.linspace(3/4, 1, 5).round(2));
ax6.set_xticks(np.linspace(3/4, 1, 5).round(2));
ax6.tick_params(labelsize = 24)
# ax6.grid()
ax6.set_xlim([3/4-plt_eps, 1+plt_eps])
ax6.set_ylim([3/4-plt_eps, 1+plt_eps])
ax6.set_ylabel("Recall", fontsize=18*2, rotation=270)
ax6.yaxis.set_label_coords(1.01, 0.5)
ax6.set_xlabel("Precision", fontsize=18*2)
ax1.set_title(id_name, size=18*2)
ax2.set_title("Conjunto de nivel\npositivo", size=18*2)
ax3.set_title("Precision vs Recall", size=18*2)
ax1.set_ylabel("Imagen original", size=18*2)
ax4.set_ylabel("Target", size=18*2)
ax2.set_ylabel(f"(sigma, lambda) = {str(sgm_lmbd_0)}", size=18*2)
ax5.set_ylabel(f"(sigma, lambda) = {str(sgm_lmbd_1)}", size=18*2)
ax5.set_xlabel(f"Iteración {frame_number}", size=18*3)
ax5.xaxis.set_label_coords(0.5, -0.1)
fig = plt.figure(figsize=(8*3,8*2))
ax1 = fig.add_subplot(231)
ax2 = fig.add_subplot(232)
ax3 = fig.add_subplot(233)
ax4 = fig.add_subplot(234)
ax5 = fig.add_subplot(235)
ax6 = fig.add_subplot(236)
plot = [
ax1.imshow(img_o),
ax4.imshow(img_r, cmap=ListedColormap(['black','tab:red'])),
ax2.imshow((zarray[0][:, :, 0]>0), cmap=ListedColormap(['black','tab:red'])),
ax5.imshow((zarray[1][:, :, 0]>0), cmap=ListedColormap(['black','tab:red'])),
ax3.scatter(parray[0][:1], rarray[0][:1], c=range(1), cmap=cmap_pr, s=50*3),
ax6.scatter(parray[1][:1], rarray[1][:1], c=range(1), cmap=cmap_pr, s=50*3)
]
ax1.set_xticks([])
ax1.set_yticks([])
ax4.set_xticks([])
ax4.set_yticks([])
ax2.set_xticks([])
ax2.set_yticks([])
ax5.set_xticks([])
ax5.set_yticks([])
ax3.set_yticks(np.linspace(3/4, 1, 5).round(2));
ax3.set_xticks(np.linspace(3/4, 1, 5).round(2));
ax3.set_xticklabels(["" for _ in range(5)]);
ax3.tick_params(labelsize = 24)
# ax3.grid()
ax3.set_xlim([3/4-plt_eps, 1+plt_eps])
ax3.set_ylim([3/4-plt_eps, 1+plt_eps])
ax3.set_ylabel("Recall", fontsize=18*2, rotation=270)
ax3.yaxis.set_label_coords(1.01, 0.5)
ax6.set_yticks(np.linspace(3/4, 1, 5).round(2));
ax6.set_xticks(np.linspace(3/4, 1, 5).round(2));
ax6.tick_params(labelsize = 24)
# ax6.grid()
ax6.set_xlim([3/4-plt_eps, 1+plt_eps])
ax6.set_ylim([3/4-plt_eps, 1+plt_eps])
ax6.set_ylabel("Recall", fontsize=18*2, rotation=270)
ax6.yaxis.set_label_coords(1.01, 0.5)
ax6.set_xlabel("Precision", fontsize=18*2)
ax1.set_title(id_name, size=18*2)
ax2.set_title("Conjunto de nivel\npositivo", size=18*2)
ax3.set_title("Precision vs Recall", size=18*2)
ax1.set_ylabel("Imagen original", size=18*2)
ax4.set_ylabel("Target", size=18*2)
ax2.set_ylabel(f"(sigma, lambda) = {str(sgm_lmbd_0)}", size=18*2)
ax5.set_ylabel(f"(sigma, lambda) = {str(sgm_lmbd_1)}", size=18*2)
ax5.set_xlabel(f"Iteración {iter_k}", size=18*3)
ax5.xaxis.set_label_coords(0.5, -0.1)
ani = animation.FuncAnimation(fig, change_plot, frn, fargs=(zarray, parray, rarray, plot), interval=1000 / fps)
path_name_gif = f"test_pascal_{id_test}"
ani.save(f'{path_name_gif}.gif');
MovieWriter ffmpeg unavailable; using Pillow instead.
mygif = Image.open(path_name_gif+".gif")
for frame in range(0, mygif.n_frames):
mygif.seek(frame)
mygif.save(f"{path_name_gif}_gif/"+"frame-"+str(frame)+".png")